package usuario;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless(name = "usuarioBean")
public class UsuarioBean implements Usuario {
	
	@PersistenceContext(unitName = "sqlPU")
	private EntityManager em;
	private EntidadeCliente cliente = new EntidadeCliente();
	private List<EntidadeCliente> clientes = new ArrayList<EntidadeCliente>();
	private EntidadeFuncionario funcionario = new EntidadeFuncionario();
	private List<EntidadeFuncionario> funcionarios = new ArrayList<EntidadeFuncionario>();

	@Override
	public EntidadeCliente busca_cliente(int i) {
		Query qm = em.createQuery("from EntidadeCliente where codigo = :codigo");
		qm.setParameter("codigo", i);
		cliente = (EntidadeCliente) qm.getSingleResult();
		return cliente;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<EntidadeCliente> clientes() {
		Query qm = em.createQuery("from EntidadeCliente");
		clientes = (List<EntidadeCliente>) qm.getResultList();
		return clientes;
	}

	@Override
	public EntidadeFuncionario busca_funcionario(int i) {
		Query qm = em.createQuery("from EntidadeFuncionario where codigo = :codigo");
		qm.setParameter("codigo", i);
		funcionario = (EntidadeFuncionario) qm.getSingleResult();
		return funcionario;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<EntidadeFuncionario> funcionarios() {
		Query qm = em.createQuery("from EntidadeFuncionario");
		funcionarios = (List<EntidadeFuncionario>) qm.getResultList();
		return funcionarios;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<EntidadeFuncionario> nome_func(String nome) {
		Query qm = em.createQuery("from EntidadeFuncionario where nome like :nome");
		qm.setParameter("nome", nome + "%");
		funcionarios = (List<EntidadeFuncionario>) qm.getResultList();
		return funcionarios;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<EntidadeCliente> nome_cli(String nome) {
		Query qm = em.createQuery("from EntidadeCliente where nome like :nome");
		qm.setParameter("nome", nome + "%");
		clientes = (List<EntidadeCliente>) qm.getResultList();
		return clientes;
	}

}
